package com.gjt.udp;

import java.net.DatagramPacket;

/**
 * Created with Intel IDEA.
 * 介绍UDP
 *
 * @Auther: gjt
 * @Date: 2024/10/27 13:47
 */
public class UDPData {
    /**
     * UDP数据报 基于ip数据报建立的，udp 首部只向ip 首部添加了8个字节；
     */
    public static void main(String[] args) {

        /**
         * 构造函数 :
         *  public DatagramPacket(byte[] buffer, int length): 接收时使用，当Socket接收一个数据报时，把数据报中的部分数据存储到buffer中
         *      从0 的位置开始。
         *  public DatagramPacket(byte[] buffer, int offset ,int length): 接收时使用，当Socket接收一个数据报时，把数据报中的部分数据存储
         *   到buffer中从offset 开始存储 一个到buffer满 或写入length 个字节。
         *
         */


        /**
         * 发送数据报的构造函数：
         *  public DatagramPacket(byte[] data, int length, InetAddress destination, int port):
         *  public DatagramPacket(byte[] data, int offset , int length, InetAddress destination, int port):
         *  public DatagramPacket(byte[] data, int length, SocketAddress destination, int port):
         *  public DatagramPacket(byte[] data, int length,int length, SocketAddress destination, int port):
         */


        /**
         * get 方法:
         *  getAddress, getPort, getSocketAddress,
         *  getData(): 返回数据报中数据， String s = new String (dp.getData(), "UTF-8");
         *          如果数据报中不包含文本，InputStream in = new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength())
         *  getLength(): 返回数据报的中的字节长度
         */

        /**
         * set方法 :
         *  setData(byte[] data):改变UDP数据报的有效载荷
         *  setData(byte[] data, int offset, int length): 可以将所有数据放到一个数组中，每次发送一部分。
         *  setAddress(InetAddress remote): 修改数据报发送的地址
         *  setPort(): 改变目标地址
         *
         */
    }

}
